EVAL এবং EVALSHA কমান্ডের মাধ্যমে Scripts Execute করা

Redis তে Lua Scripting - রেডিস (Redis) - Database Tutorials

358

Redis-এ EVAL এবং EVALSHA কমান্ডের মাধ্যমে Scripts Execute করা হল Redis-এ Lua স্ক্রিপ্ট চালানোর একটি পদ্ধতি। Redis Lua স্ক্রিপ্ট চালানোর জন্য EVAL এবং EVALSHA কমান্ড ব্যবহার করা হয়। এটি রেডিস সার্ভারে একটি একক অ্যাটমিক অপারেশন হিসেবে একাধিক Redis কমান্ড একসাথে চালানোর সুবিধা দেয়। এই স্ক্রিপ্টগুলি সাধারণত পারফরম্যান্স বাড়ানোর জন্য এবং একাধিক কমান্ডকে একত্রে কার্যকর করতে ব্যবহৃত হয়।


EVAL কমান্ড

EVAL কমান্ড Lua স্ক্রিপ্ট রান করার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি সরাসরি একটি Lua স্ক্রিপ্ট Redis সার্ভারে পাঠাতে পারেন এবং সেই স্ক্রিপ্টের ফলাফল ফেরত পেতে পারেন।

EVAL কমান্ডের সিনট্যাক্স:

EVAL <lua-script> <num-keys> <key1> <key2> ... <keyN> <arg1> <arg2> ... <argM>
  • <lua-script>: এটি Lua স্ক্রিপ্ট যা Redis-এ এক্সিকিউট হবে।
  • <num-keys>: এটি সেই কিপেয়ারগুলোর সংখ্যা যা স্ক্রিপ্টে ব্যবহৃত হবে।
  • <key1>, <key2>, ..., <keyN>: এই কিপেয়ারগুলোর মধ্যে Redis কিপেয়ার অন্তর্ভুক্ত থাকে যেগুলি স্ক্রিপ্টের ভিতরে ব্যবহৃত হবে।
  • <arg1>, <arg2>, ..., <argM>: এই আর্গুমেন্টগুলো Lua স্ক্রিপ্টে ব্যবহৃত হবে।

EVAL কমান্ডের উদাহরণ

  1. একটি কিপেয়ার সেট এবং গেট করা:
EVAL "redis.call('SET', KEYS[1], ARGV[1]) return redis.call('GET', KEYS[1])" 1 mykey "Hello Redis"
  • ব্যাখ্যা:
    • স্ক্রিপ্টটি প্রথমে mykey কিপেয়ার সেট করবে "Hello Redis" ভ্যালুর সাথে এবং তারপর সেই কিপেয়ারটির মান (value) রিটার্ন করবে।
  1. একাধিক কিপেয়ার প্রক্রিয়া করা:
EVAL "return redis.call('HGET', KEYS[1], ARGV[1])" 1 myhash field1
  • ব্যাখ্যা:
    • স্ক্রিপ্টটি একটি হ্যাশ myhash থেকে field1 এর মান রিটার্ন করবে।

EVALSHA কমান্ড

EVALSHA কমান্ড Lua স্ক্রিপ্ট রান করতে ব্যবহৃত হয়, তবে এটি Lua স্ক্রিপ্টের SHA1 হ্যাশ ব্যবহার করে। এটি তখন ব্যবহার করা হয় যখন আপনি Lua স্ক্রিপ্টটি একবার Redis-এ কম্পাইল করেছেন এবং সেই স্ক্রিপ্টের SHA1 হ্যাশের মাধ্যমে ভবিষ্যতে তা কল করতে চান। এটি পারফরম্যান্স অপ্টিমাইজেশন-এর জন্য ব্যবহৃত হয় কারণ Redis একটি স্ক্রিপ্টের SHA1 হ্যাশ মেমরিতে সংরক্ষণ করে, ফলে স্ক্রিপ্টটি আবার কম্পাইল করা না লাগে।

EVALSHA কমান্ডের সিনট্যাক্স:

EVALSHA <sha1> <num-keys> <key1> <key2> ... <keyN> <arg1> <arg2> ... <argM>
  • <sha1>: এটি Lua স্ক্রিপ্টের SHA1 হ্যাশ।
  • <num-keys>: এটি সেই কিপেয়ারগুলোর সংখ্যা যা স্ক্রিপ্টে ব্যবহৃত হবে।
  • <key1>, <key2>, ..., <keyN>: এই কিপেয়ারগুলো স্ক্রিপ্টে ব্যবহৃত হবে।
  • <arg1>, <arg2>, ..., <argM>: স্ক্রিপ্টে ব্যবহৃত আর্গুমেন্ট।

EVALSHA কমান্ডের উদাহরণ

  1. SHA1 হ্যাশ বের করা:

প্রথমে Lua স্ক্রিপ্টটি Redis-এ এক্সিকিউট করুন এবং তার SHA1 হ্যাশ বের করুন:

EVAL "redis.call('SET', KEYS[1], ARGV[1]) return redis.call('GET', KEYS[1])" 1 mykey "Hello Redis"

এবার, স্ক্রিপ্টের SHA1 হ্যাশ পেতে:

SCRIPT LOAD "redis.call('SET', KEYS[1], ARGV[1]) return redis.call('GET', KEYS[1])"

Redis একটি SHA1 হ্যাশ রিটার্ন করবে, যেমন:

"e9aee3e7f3b43080bdf647ffb4a94082a80cfecc"

এখন, EVALSHA ব্যবহার করে স্ক্রিপ্টটি রান করুন:

EVALSHA e9aee3e7f3b43080bdf647ffb4a94082a80cfecc 1 mykey "Hello Redis"

EVAL এবং EVALSHA এর মধ্যে পার্থক্য

  • EVAL:
    • Lua স্ক্রিপ্টটি সরাসরি পাঠিয়ে এক্সিকিউট করে।
    • একাধিক স্ক্রিপ্ট এক্সিকিউট করতে প্রতিবার স্ক্রিপ্টটি Redis-এ পাঠানো হয়।
    • এটি সাধারনত ডেভেলপমেন্ট এবং ডিবাগিং সময় ব্যবহৃত হয়।
  • EVALSHA:
    • স্ক্রিপ্টটি প্রথমে একবার কম্পাইল হয় এবং পরবর্তী সময়ে শুধুমাত্র স্ক্রিপ্টের SHA1 হ্যাশ ব্যবহার করে এক্সিকিউট করা হয়।
    • পারফরম্যান্স উন্নত করতে ব্যবহৃত হয় কারণ স্ক্রিপ্ট কম্পাইল করার প্রয়োজন হয় না।
    • এটি প্রোডাকশন পরিবেশে ব্যবহৃত হয়।

সারাংশ

Redis-এ Lua স্ক্রিপ্ট এক্সিকিউট করার জন্য EVAL এবং EVALSHA কমান্ড ব্যবহৃত হয়। EVAL কমান্ডের মাধ্যমে আপনি সরাসরি Lua স্ক্রিপ্ট Redis-এ পাঠিয়ে এক্সিকিউট করতে পারেন, আর EVALSHA কমান্ড ব্যবহৃত হয় যখন স্ক্রিপ্টের SHA1 হ্যাশ মেমরিতে সংরক্ষণ করা থাকে, এবং এটি আরও দ্রুত এবং কার্যকরী ভাবে স্ক্রিপ্ট এক্সিকিউট করার জন্য ব্যবহৃত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...